home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
macros
/
latex209
/
contrib
/
trees
/
pstrees
/
columns.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-28
|
2KB
|
133 lines
# include "align.h"
# include <stdio.h>
/* externals */
/* from slurp.c */
extern void fetchline();
extern char nextchar();
extern char peekchar();
extern int eoln();
extern FILE *outstream;
/* from words.c */
extern void readword_col();
extern void init_store();
/* externals from errors.c */
extern goof(); /* error-writing routine
void goof(char *s); */
extern int sinned, error; /* error-flags */
/* local word-ending function */
static int endword(c)
char c;
{
char d;
if (eoln() || ((c == ' ' && ((d = squizchar()) == ' ' || d == '\n')))
|| c == '|')
return(TRUE);
else
return(FALSE);
}
/* skips over `|''s and blanks, getting width */
static int chewspace()
{
int count;
char c;
count = 0;
if (!eoln()) {
while ((c = squizchar()) == ' ' || c == '|') {
count++;
nextchar();
}
}
return(count);
}
do_word()
{
word holder;
int space;
int stop;
if (!eoln()) {
init_store();
readword_col(&holder,&stop,endword,nextchar);
/* printf("word = %s; eol = %d\n",holder.loc,eoln()); */
space = chewspace();
/* printf("chewed space %d:: eol = %d\n",space,eoln()); */
if (!error) {
if (eoln()) {
fprintf(outstream,"%s",holder.loc);
}
else {
space = space+holder.size+1;
fprintf(outstream,"\\cbx{%d}{%s}",space,holder.loc);
}
}
}
}
do_line()
{
int initspace;
initspace = chewspace();
if (!eoln() && initspace > 0)
fprintf(outstream,"\\cbx{%d}{}",initspace);
while (!eoln())
do_word();
fprintf(outstream, "\\\\\n");
}
/* top-level routine, that reads in lines until it encounters
end-of-example or eof */
void columns()
{
int go;
error = FALSE;
go = TRUE;
while (go) {
fetchline();
if (matchstr(".>"))
go = FALSE;
if (eof()) {
goof("file ends in example");
go = FALSE;
}
if (go) do_line();
}
}
/*
char delmark = '\\';
int wordmax = 60;
main()
{
word sample;
int stop;
int s;
get_com_widths("widths.dat");
open_source("text.dat");
init_store();
advance();
readword_col(&sample,&stop,endword,nextchar);
printf("%s, size = %d, bracket= %d\n",sample.loc,sample.size,sample.bracket);
if (stop) printf("stop!\n");
}
*/